import logging
import sys

from loguru import logger

logger.remove()

class InterceptHandler(logging.Handler):
    def emit(self, record):
        logger_opt = logger.opt(depth=6, exception=record.exc_info)
        logger_opt.log(record.levelname, record.getMessage())


logging.basicConfig(handlers=[InterceptHandler()], level=0)

# 配置 Loguru 输出到文件和控制台
logger.add(
    "log/app.log",
    rotation="10 MB",          # 按大小轮转（每10MB）
    retention="30 days",       # 保留30天日志
    level="DEBUG",             # 记录DEBUG及以上级别
    format="{time:YYYY-MM-DD HH:mm:ss.SSS} [ {level} ] {file}:{function}:{line} - {message}",
    enqueue=True               # 多进程安全
)

# 添加控制台输出（带颜色）
logger.add(
    sys.stdout,
    level="INFO",              # 控制台只显示INFO及以上级别
    colorize=True,
    format="<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> [ <level>{level}</level> ] <cyan><bold>{file}:{function}:{line}</bold></cyan> - <black><bold>{message}</bold></black>"
)

logger.level("DEBUG", color="<cyan><bold>")    # 青色+粗体
logger.level("INFO", color="<black><bold>")          # 绿色
logger.level("WARNING", color="<yellow><bold>")      # 黄色
logger.level("ERROR", color="<red><bold>")     # 红色+粗体
logger.level("CRITICAL", color="<white on red><bold>")  # 白字红底+粗体